const express = require('express');
const router = express.Router();
const User = require('../models/user');

/**
 * POST /api/users - 创建新用户
 * 请求体参数：
 * - nickName: 字符串（必填，1-50字）
 * - avatarUrl: 字符串（可选）
 * - openid: 字符串（必填，唯一标识）
 * - active: 数字（必填，0=禁用/1=正常）
 */
router.post('/', async (req, res) => {
  try {
    // 第一步：获取请求参数
    const { nickName, avatarUrl, openid, active } = req.body;
    console.log('收到创建用户请求，参数：', req.body);

    // 第二步：参数有效性验证
    if (!nickName || nickName.length < 1 || nickName.length > 50) {
      return res.status(400).json({ message: '昵称必须为1-50个字符' });
    }
    if (!openid) {
      return res.status(400).json({ message: 'openid为必填参数' });
    }
    if (active !== 0 && active !== 1) {
      return res.status(400).json({ message: 'active必须为0或1' });
    }
    if (!req.body.email) {
      return res.status(400).json({ message: 'email为必填参数' });
    }

    // 第三步：创建用户
    const newUser = new User({
      nickName,
      avatarUrl,
      openid,
      active,
      email: req.body.email
    });
    await newUser.save();

    // 第四步：返回结果
    res.status(201).json({ message: '用户创建成功', user: newUser });
  } catch (error) {
    // 第五步：错误处理
    console.error('创建用户失败:', error);
    if (error.code === 11000) {
      res.status(400).json({ message: 'openid已存在' });
    } else {
      res.status(500).json({ message: '服务器内部错误' });
    }
  }
});

/**
 * GET /api/users - 查询所有用户
 */
router.get('/', async (req, res) => {
  try {
    const users = await User.find();
    res.status(200).json(users);
  } catch (error) {
    console.error('查询用户失败:', error);
    res.status(500).json({ message: '服务器内部错误' });
  }
});

// /**
//  * DELETE /api/users/:id - 删除指定用户
//  */
// router.delete('/:id', async (req, res) => {
//   try {
//     const { id } = req.params;
//     const deletedUser = await User.findByIdAndDelete(id);

//     if (!deletedUser) {
//       return res.status(404).json({ message: '用户不存在' });
//     }

//     res.status(200).json({ message: '用户删除成功', user: deletedUser });
//   } catch (error) {
//     console.error('删除用户失败:', error);
//     res.status(500).json({ message: '服务器内部错误' });
//   }
// });

module.exports = router;